package com.shrct.businessprocess.product;

import com.shrct.businessprocess.product.RCDerivedFullServiceProductSpecification;
import com.shrct.businessprocess.product.RCFullServiceProductEntry;
import com.shrct.businessprocess.product.RCLogicProduct;
import com.shrct.businessprocess.product.impl.RCFullServiceImpl;
import com.shrct.businessprocess.product.proxy.RCFullServiceProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCFullServiceImpl.class)
public interface RCFullService extends IModelObject {
  public abstract String getName();
  
  public abstract RCFullService setName(final String name);
  
  public abstract RCLogicProduct getSourceProduct();
  
  public abstract RCFullService setSourceProduct(final RCLogicProduct sourceProduct);
  
  public abstract Collection<RCFullServiceProductEntry> getEntries();
  
  public abstract RCFullServiceProductEntry createAndAddtoEntries(final String projectid);
  
  public abstract RCFullServiceProductEntry createAndAddtoEntries(final String projectid, final Procedure1<RCFullServiceProductEntry> updater);
  
  public abstract RCFullService removeFromEntries(final RCFullServiceProductEntry rCFullServiceProductEntry);
  
  public abstract RCFullService removeAllEntries();
  
  public abstract RCFullServiceProductEntry registerFullServiceProduct(final String projectid, final String serviceContraceCode, final RCDerivedFullServiceProductSpecification type, final Date startDate, final Date dueDate);
  
  public abstract RCFullServiceProxy toProxy();
}
